R para Ciencia de Datos en Salud:
Análisis Descriptivo e Inferencia Estadística
Percy Soto-Becerra M.D., M.Sc(c)
InkaStats Data Science Solutions | Medical Branch
@github/psotob91
¿Análisis descriptivo?
¿Cuándo? Luego de AID uno ya está listo para describir sus datos.
¿Cómo? Hay muchas formas de describir datos, todos son combinación de medidas de resumen en texto y tablas, así como gráficos.
¿Para qué?
Un fin en sí mismo en estudios descriptivos propiamente dichos.
Un medio para un fin en estudios que tienen objetivos de inferencia causal o perdicción.
¿Qué describir de los datos numéricos?
Forma
Simetría: Sesgo a la derecha, sesgo a la izquierda, simétrico
Modas: Unimodal, bimodal, multimodal, uniforme (no moda)
Curtosis: Solo en distribución unimodal
Centro
Dispersión
Observaciones inusuales
Estudio sobre inmunogenicidad de tercera dosis. Se usó datos simulados del estudio titulado “Immunogenicity and reactogenicity of a third dose of BNT162b2 vaccine for COVID-19 after a primary regimen with BBIBP-CorV or BNT162b2 vaccines in Lima, Peru”https://doi.org/10.1101/2022.05.01.22274548
# A tibble: 6 × 9
id edad sexo comorb tipo_refuerzo tdosis_refuerzo ant_COV IgG_Basal
<dbl> <dbl> <fct> <fct> <chr> <dbl> <fct> <dbl>
1 1 23 Femenino No Heterologo 233 Prior In… 99.8
2 2 24 Masculino No Heterologo 232 Prior In… 41.3
3 3 24 Femenino No Heterologo 242 No Infec… 414.
4 4 23 Femenino No Heterologo 234 No Infec… 13.4
5 5 24 Femenino No Heterologo 236 Prior In… 4.83
6 6 26 Femenino No Heterologo 241 Prior In… 21.7
# … with 1 more variable: IgG_Final <dbl>
Rows: 285
Columns: 9
$ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…
$ edad <dbl> 23, 24, 24, 23, 24, 26, 25, 27, 25, 26, 28, 28, 27, 29…
$ sexo <fct> Femenino, Masculino, Femenino, Femenino, Femenino, Fem…
$ comorb <fct> No, No, No, No, No, No, No, No, No, No, No, No, No, No…
$ tipo_refuerzo <chr> "Heterologo", "Heterologo", "Heterologo", "Heterologo"…
$ tdosis_refuerzo <dbl> 233, 232, 242, 234, 236, 241, 201, 241, 212, 239, 246,…
$ ant_COV <fct> Prior Infection, Prior Infection, No Infection, No Inf…
$ IgG_Basal <dbl> 99.79, 41.34, 413.50, 13.42, 4.83, 21.70, 8.70, 10.81,…
$ IgG_Final <dbl> 554.63, 549.02, 485.43, 573.46, 473.81, 603.79, 532.84…
| Name | Piped data |
| Number of rows | 285 |
| Number of columns | 9 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| factor | 3 |
| numeric | 5 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| tipo_refuerzo | 0 | 1 | 8 | 10 | 0 | 2 | 0 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| sexo | 0 | 1 | FALSE | 2 | Fem: 190, Mas: 95 |
| comorb | 0 | 1 | FALSE | 2 | No: 214, Sí: 71 |
| ant_COV | 0 | 1 | FALSE | 2 | No : 201, Pri: 84 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1 | 143.00 | 82.42 | 1.00 | 72.00 | 143.00 | 214.00 | 285.00 | ▇▇▇▇▇ |
| edad | 0 | 1 | 48.25 | 14.71 | 23.00 | 36.00 | 46.00 | 59.00 | 97.00 | ▇▇▇▂▁ |
| tdosis_refuerzo | 0 | 1 | 214.47 | 25.28 | 134.00 | 199.00 | 222.00 | 235.00 | 267.00 | ▁▂▃▇▁ |
| IgG_Basal | 0 | 1 | 84.01 | 124.58 | -2.19 | 8.18 | 28.59 | 97.18 | 583.97 | ▇▁▁▁▁ |
| IgG_Final | 0 | 1 | 492.26 | 71.15 | 235.51 | 447.18 | 501.20 | 545.15 | 618.44 | ▁▁▃▇▅ |
Variables numéricas
Variables categóricas
Medidas numéricas de resumen en tablas o texto
Medidas de tendencia central
Medidas de posición
Gráficos
Histogramas
Densidad
Cajas
Violin
Puntos
Combinación de gráficos
Permiten visualizar la distribución de la variable numérica en la muestra de datos.
Hay varios tipos de gráficos que pueden hacerse para inspeccionar la variable numérica.
Hay que distinguir dos tipos de gráficos:
Los de inspección: Deben ser rápidos de generar y leer, aunque no sean tan personalizables o elegantes. Usar funciones wrapper() de otros paquetes ayuda mucho. Usaremos {ggpubr}
Los de reporte: Deben ser elegantes y super personalizados., aunque se demoren en generarse. ¡{ggplot2} es fenomenal para estos!
Pros
Paquete que proporciona funciones que siguen la gramática de gráficos.
Altamante personalizable:
Contras
Aunque cuenta con varios atajos de personalización (p. ej., theme_), sigue requiriendo bastante código.
Se deben dibujar una variable a la vez. Dibujar varias variables a la vez es un poco más “tricky” y requiere un poco de programación en R.
Pros
Es un atajo o “wrapper” de ggplot2.
+Se requiere mucho menos código para gráficos de interés y se pueden graficar varias variables a la vez.
Contras
Su capacidad de personalización es menor que ggplot2. Sin embargo, al construirse sobre ggplot2, puede seguir modificándose sobre este.
Dependes de los gráficos iniciales que ggpubr te ofrece.
Podemos crear histogramas usando la geometría
geom_histogram().
Se puede configurar el ancho de las barras (bins e inglés).
Podemos personalizar el gráfico agregando capas. Por ejemplo, podemos usar
labs()ytheme_:
Más información en el siguiente enlace:
Podemos usar densidades en vez de frecuencias absolutas o relativas en los histogramas. En variables continuas, las densidades se aproximan mejor a la idea de densidad de probabilidad
Se puede configurar el ancho de las barras (bins e inglés).
Podemos personalizar el gráfico agregando capas. Por ejemplo, podemos usar
labs()ytheme_:
Más información en el siguiente enlace:
En vez de graficar histogramas, podemos dibujar gráfico de densidades cuyas curvas están suavizadas imitando el aspecto de una distribución de probabilidad. Usamo la geometría
geom_density().
Se puede configurar el parámetro de suavización adjust
Podemos personalizar el gráfico agregando capas. Por ejemplo, podemos usar
labs()ytheme_:
Más información en el siguiente enlace:
Podemos crear gráficos de cajas usando la geometría
geom_boxplot().
Podemos personalizar el gráfico agregando capas. Por ejemplo, podemos usar
labs()ytheme_. También podemos eliminar los números y guiones del eje x usandotheme().
Anatomía:
Bordes de caja: percentil 25 (cuartil 1) y 75 (cuartil 3)
Linea horizontal dentro de caja: percentil 50 (cuartil 2 o mediana)
Rango intercuartílico (IQR): percentil 75- percentil 25
Bigotes: ± 1.5 IQR
Puntos fuera de bigotes: Outliers según regla de Tukey
Aunque se puede usar en gráficos univariados, no es un muy gráfico para estos fines.
Los “outliers” o valores extremos son solo referenciales.
Las cajas sugieren simetría de distribución, pero no permiten ver la forma directamente:
Distribución simétrica
Distribución asimétrica
Más información en el siguiente enlace:
Gráficos de violin son similares a gráficos de caja, excepto porque también muestran la densidad de probabilidad.
Podemos personalizar el gráfico agregando capas. Por ejemplo, podemos usar
labs()ytheme_. También podemos eliminar los números y guiones del eje x usandotheme().
A menudo se reportan combinado con un gráfico de cajas, puntos o ambos.
Los gráficos de violin combinados dan mucha más información, por lo que se debería preferir usar.
Contraindicación: Si se cuentan con pocos datos, los gráficos de kernel no son confiables.
Distribución simétrica
Distribución asimétrica
Más información en el siguiente enlace:
Se sugiere reportar gráficos descriptivos que sean informativos. Estos pueden obtenerse de combinar gráficos existentes. Veremos algunos ejemplos.
Sin personalizar
Sin personalizar
Sin personalizar
Descargue la carpeta var_num_graficos.
Abra el proyecto var_num_graficos.Rproj y dentro de este, abra el archivo quarto var_num_graficos.qmd.
Siga las instrucciones indicadas en este.
Renderice el archivo quarto final.
10:00
Variables numérica